using System;
using System.Data;
using System.Collections;
using System.Text;
using System.Security;
using System.Security.Cryptography;
using Microsoft.Practices.EnterpriseLibrary.Data;


namespace THSLib
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class ADUsersController:BaseBusinessController
    {

        #region SP Name        

        //Select By ForeignKey Stored Procedure
        private readonly string spGetADUsersByADUserGroupID = "ADUsers_SelectByADUserGroupID";

        /*Remove cause of not use
        private readonly string spGetADUsersByADContactID = "ADUsers_SelectByADContactID";*/

        //Select By all foreignkey Stored Procedure

        /*Remove cause of not use
        private readonly string spGetADUsersByADUserGroupIDAndADContactID = "ADUsers_SelectByADUserGroupIDAndADContactID";

        //Delete by foreignkey Stored Procedure
        private readonly string spDeleteADUsersByADUserGroupID = "ADUsers_DeleteByADUserGroupID";
        private readonly string spDeleteADUsersByADContactID = "ADUsers_DeleteByADContactID";*/

        #endregion

        public ADUsersController()
        {
            dal = new DALBaseProvider("ADUsers", typeof(ADUsersInfo));
        }
        public int CreateUser(ADUsersInfo objADUsersInfo)
        {
            byte[] passwordBytes = SHA1Managed.Create().ComputeHash(ASCIIEncoding.ASCII.GetBytes(objADUsersInfo.ADPassword));
            objADUsersInfo.ADPassword = Convert.ToBase64String(passwordBytes);
            objADUsersInfo.ADUserID = dal.GetMaxID()+1;
            return dal.CreateObject(objADUsersInfo);
        }

        public int UpdateUser(ADUsersInfo objADUsersInfo, bool bChange)
        {
            byte[] passwordBytes = SHA1Managed.Create().ComputeHash(ASCIIEncoding.ASCII.GetBytes(objADUsersInfo.ADPassword));
            if (bChange)
                objADUsersInfo.ADPassword = Convert.ToBase64String(passwordBytes);
            return dal.UpdateObject(objADUsersInfo);
        }        

        public int GetUserGroupOfUser(int iADUserID)
        {
            ADUsersInfo objADUsersInfo = new ADUsersInfo();
            objADUsersInfo = (ADUsersInfo)GetObjectByID(iADUserID);
            return objADUsersInfo.ADUserGroupID;
        }

        public int GetUserGroupOfUser(String strUserName)
        {
            ADUsersInfo objADUsersInfo = new ADUsersInfo();
            objADUsersInfo = (ADUsersInfo)GetObjectByName(strUserName);
            if (objADUsersInfo != null)
                return objADUsersInfo.ADUserGroupID;
            return 0;
        }

        public DataSet GetAllUserByUserGroupID(int iADUserGroupID)
        {
            return (DataSet)dal.GetDataSet(spGetADUsersByADUserGroupID, iADUserGroupID);                       
        }       
    }
}
